package com.wlsk.license.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.wlsk.license.dao.entity.SysDict;
import com.wlsk.license.dto.request.UserReqDto;
import com.wlsk.license.dto.response.DictDataResultDto;
import com.wlsk.license.dto.response.feign.OrgTreeResVo;

import java.util.List;
import java.util.Map;

/**
 * <p>
 * 字典表 服务类
 * </p>
 *
 * @author liuzhangbin
 * @since 2025-08-26
 */
public interface ISysDictService extends IService<SysDict> {

    /**
     * 根据类型查询字典数据(集合)
     *
     * @param dictType 字典类型
     * @return
     */
    List<DictDataResultDto> getListByType(String dictType);


    /**
     * 根据类型查询字典数据(单个)
     *
     * @param dictType
     * @return
     */
    DictDataResultDto getOneByType(String dictType);

    /**
     * 根据类型和值查询字典数据
     * @param dictType 字典类型
     * @param dictValue 字典值
     * @return
     */
    DictDataResultDto getOneByTypeAndValue(String dictType, String dictValue);

    Map<String, List<DictDataResultDto>> getAllGroupedByType();

    /**
     * 获取用户机构树
     * @param reqDto
     * @return
     */
    List<OrgTreeResVo> orgList(UserReqDto reqDto);

    /**
     * 获取用户机构ID列表
     * @param uid
     * @return
     */
    List<Long> userOrgIdList(Long uid);

    /**
     * 查询部门列表
     * @param uid
     * @return
     */
    List<Long> userDeptIdList(Long uid);

    /**
     * 删除缓存
     */
    void clearOrgCache(String uid);
}
